/**
 * 截取固定长度的字符串， 不是字符长度，二十字符占据的空间长度
 * 默认一个汉字是1长度，一个小写字母是0.5长度
 * 0.5长度的匹配，并不能覆盖全部 /[\sa-z0-9-,.*+=!?$\\/$()]/
 * 其它字符均认为是1字符长度
 *
 * @param {*} string 原字符串
 * @param {*} length 需要截取的长度
 * @param {*} string 多余的字符要转化成什么 比如："..."
 */
 export const sliceString = (string, length, add) => {
  if (!string || !length || string.length <= length) {
      return string;
  }
  const harfChar = hc => /[\sa-z0-9-,.*+=!?$\\/$()]/.test(hc);
  let s = 0;
  const sa = string.split('');
  const a = [];
  const b = [];
  let res = [];
  for (let i = 0; i < sa.length; i++) {
      s += harfChar(sa[i]) ? 0.5 : 1;
      if (s <= length) {
          a.push(sa[i]);
      }
      if (s <= length - 1) {
          b.push(sa[i]);
      }
      res = s > length ? [...b, add || ''] : [...a];
  }
  return res.join('');
};